//泛型类

//普通类
class CommonClass {
  Set s = Set();
  add(int value) {
    s.add(value);
  }

  void info() {
    print(this.s);
  }
}

class GenericsClass<T> {
  Set s = Set<T>();

  void add(T value) {
    s.add(value);
  }

  void info() {
    print(s);
  }
}

void main(List<String> args) {
  var c = CommonClass();
  c.add(1);
  c.add(2);
  // c.add('2'); //会报错, 只能加入 Int类型
  c.info();

  var g = GenericsClass();
  g.add(1);
  g.add('hello');
  g.info();



  var g1 = GenericsClass<int>();
  g1.add(1);
  // g1.add('2'); 我们可以给泛型类提前做某种类型的 约束, 然后类中只能处理相同的类型
  g1.info();

  var g2 = GenericsClass<String>();
  g2.add('hello');
  g2.add('world');
  g2.info();

  //泛型类相比于普通类, 可以处理更多的情景
  
}
